Tutorial Membuat Filter Data di Laravel

Posted on 15 August 2024


Untuk memfilter data di Laravel, Anda bisa menggunakan berbagai teknik tergantung pada kebutuhan spesifik aplikasi Anda. Berikut adalah tutorial untuk memfilter data menggunakan query builder dan Eloquent ORM, serta penerapannya dalam Blade views.

Tutorial Memfilter Data di Laravel

1. Menyiapkan Model dan Controller

Misalkan Anda memiliki model MataKuliah dan tabel mata_kuliah yang memiliki kolom kode, nama, dan deskripsi.

Pastikan model MataKuliah dan MataKuliahController sudah ada. Jika belum silahkan anda membuatnya terlebih dahulu, sesuaikan nama dengan proyek anda.

jika semua sudah ada dalam proyek anda maka anda bisa mengikuti langkah berikut.

2. Menambahkan Metode Filter di Controller

Edit controller untuk menambahkan metode yang memfilter data. Misalkan kita ingin memfilter berdasarkan nama mata kuliah.

Contoh untuk MataKuliahController.php:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\MataKuliah; class MataKuliahController extends Controller { public function index(Request $request) { $query = MataKuliah::query(); // Filter berdasarkan nama jika parameter 'nama' ada di request if ($request->filled('nama')) { $query->where('nama', 'like', '%' . $request->input('nama') . '%'); } // Menampilkan data dengan pagination $mataKuliah = $query->paginate(10); return view('matakuliah.index', compact('mataKuliah')); } }

3. Menambahkan Form Filter di Blade View

Edit Blade view untuk menambahkan form filter. resources/views/sesuaikan nama view yang ingin anda tambahkan fitur filter.

resources/views/matakuliah/index.blade.php

<!DOCTYPE html> <html> <head> <title>Daftar Mata Kuliah</title> </head> <body> <!-- Form Filter --> <form method="GET" action="{{ route('matakuliah.index') }}"> <input type="text" name="nama" placeholder="Cari nama mata kuliah" value="{{ request()->input('nama') }}"> <button type="submit">Filter</button> </form> <!-- Tabel Data Mata Kuliah --> <table> <thead> <tr> <th>Kode</th> <th>Nama</th> <th>Deskripsi</th> </tr> </thead> <tbody> @foreach ($mataKuliah as $item) <tr> <td>{{ $item->kode }}</td> <td>{{ $item->nama }}</td> <td>{{ $item->deskripsi }}</td> </tr> @endforeach </tbody> </table> <!-- Pagination Links --> {{ $mataKuliah->links() }} </body> </html>

Penjelasan

  1. Model MataKuliah: Menyediakan interaksi dengan tabel mata_kuliah.

  2. Controller MataKuliahController:

    • index Method: Mengambil data dari tabel mata_kuliah dan menerapkan filter berdasarkan parameter yang diberikan (misalnya, nama). Data kemudian dipaginate untuk menampilkan 10 item per halaman.
    • $query->where('nama', 'like', '%' . $request->input('nama') . '%'): Menambahkan kondisi filter berdasarkan input dari form.
  3. Blade View:

    • Form Filter: Mengirimkan permintaan GET dengan parameter filter ke route matakuliah.index.
    • Tabel Data Mata Kuliah: Menampilkan data yang difilter.
    • Pagination Links: Menampilkan link pagination untuk navigasi antar halaman.(opsional)

    Dengan mengikuti tutorial ini, Anda dapat memfilter data yang ditampilkan di Blade views dan menggunakan pagination untuk mengelola data yang banyak